package model

import exceptions.FichaInexistenteException
import traits.AñoObtencionPosterior
import traits.ImporteMayorACero
import traits.ProvinciaCorrespondeFuente
import scala.collection.mutable.ArrayBuffer

abstract class Ficha(val _año: Int, val _montoVentas: Double,
  val _montoGanancias: Double,
  val _añoObtencion: Int) {
  
  def año = _año

  def montoVentas = _montoVentas

  def montoGanancias = _montoGanancias

  def añoObtencion = _añoObtencion
  

  def esConsistenteMixin() : Boolean = true
  
  //	Retorna el calculo de la tasa de ganancias
  def tasaGanancia(): Double = {
    return (this.montoGanancias / this.montoVentas) * 100
  }
  	
  
}

class FichaEmpresa(año: Int,
  montoVentas: Double,
  montoGanancias: Double,
  añoObtencion: Int) extends Ficha(año, montoVentas, montoGanancias, añoObtencion)
				with AñoObtencionPosterior with ImporteMayorACero {
  
  
  
}

class FichaAnonima(año: Int,
					montoVentas: Double,
					montoGanancias: Double,
					val _fuente: Fuente,
					val _departamento: Departamento,
					añoObtencion: Int) extends Ficha(año, montoVentas, montoGanancias, añoObtencion) 
						with ProvinciaCorrespondeFuente with AñoObtencionPosterior with ImporteMayorACero {

  def departamento = _departamento

  def fuente = _fuente
  
  
}


class MacroFicha(val años : ArrayBuffer[Int],
					val _montoVentas: Double,
					val _montoGanancias: Double) {
  
  def montoVentas = _montoVentas
  
  def montoGanancias = _montoGanancias
  
  	def tasaGanancia(): Double = {
  			return (this.montoGanancias / this.montoVentas) * 100
  	}
  
}
